﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WorkFlowBLL;
using Library;

namespace QLCF.Forms
{
    public partial class frmUnit : Form
    {
        public Boolean isAddNew = false;
        public Boolean isLoading = true;
        public int m_unitID = -1;
        public string m_name = string.Empty;
        public int permission = 0;
        public frmUnit()
        {
            InitializeComponent();
            permission = CtrAdmin.GetPermission(Program.UserEntity.Permission, Config.Enum.Function.frmProduct);

            if ((permission & (int)Config.Enum.Permission.Add) != (int)Config.Enum.Permission.Add)
            {
                tsbAdd.Enabled = false;
            }

            if ((permission & (int)Config.Enum.Permission.Edit) != (int)Config.Enum.Permission.Edit)
            {
                tsbEdit.Enabled = false;                
            }

            if ((permission & (int)Config.Enum.Permission.Delete) != (int)Config.Enum.Permission.Delete)
            {
                tsbDelete.Enabled = false;                
            }
        }

        private void frmUnit_Load(object sender, EventArgs e)
        {
            this.isLoading = false;
            this.BindData();
        }

        public void BindData()
        {
            CtrBase ctrBase = new CtrBase();
            var items = ctrBase.GetUnitByBaseUnitID(-1);
            treeViewUnit.Nodes.Clear();            
            foreach (var item in items)
            {
                TreeNode node = new TreeNode();
                if (item.BaseUnitID > 0)
                    node.Text = item.Name + " = " + item.MultiPhy + " " + item.BaseUnitName;
                else
                    node.Text = item.Name;
                node.Tag = item.UnitID;
                node.ImageIndex = 0;
                treeViewUnit.Nodes.Add(node);
            }
        }
        

        private void tsbAdd_Click(object sender, EventArgs e)
        {
            this.isAddNew = true;
            frmUnitDetail frmUnitDetail = new frmUnitDetail(this);
            clsControls.ClearTextBox(frmUnitDetail);
            frmUnitDetail.ShowDialog();
            frmUnitDetail.Dispose();            
        }

        private void tsbEdit_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.isLoading) return;
                this.isAddNew = false;
                frmUnitDetail frmUnitDetail = new frmUnitDetail(this);
                frmUnitDetail.ShowDialog();
                frmUnitDetail.m_unitID = this.m_unitID;
            }
            catch (Exception loi)
            {
                MessageBox.Show(loi.Message.ToString());
            }
        }

        private void treeViewUnit_AfterSelect(object sender, TreeViewEventArgs e)
        {
            var unitID = Convert.ToInt32(e.Node.Tag);
            this.m_name = e.Node.Text;
            this.m_unitID = unitID;
        }

        private void tsbClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void tsbDelete_Click(object sender, EventArgs e)
        {            
            if (MessageBox.Show("Có đồng ý xoá bản ghi này không?", "Thông báo...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
            CtrBase ctrBase = new CtrBase();
            var objCheck = ctrBase.CheckExistUnitProduct(this.m_unitID);
            if(objCheck)
            {
                MessageBox.Show("Đang tồn tại sản phẩm cho đơn vị này!", "Thông báo...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            var objBase = ctrBase.UnitDelete(this.m_unitID);
            if (objBase > 0)
            {
                CtrAdmin ctra = new CtrAdmin();
                ctra.LogInsert(Program.UserEntity.UserID, Program.UserEntity.UserName, 3, "Xóa đơn vị \"" + this.m_name + "\" có mã \"" + this.m_unitID + "\"", "Quản lý đơn vị");
                MessageBox.Show("Xóa đơn vị thành công!", "Thông báo...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                this.BindData();
            }
            else
            {
                MessageBox.Show("Đang tồn tại sản phẩm cho đơn vị này!", "Thông báo...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
        }

        private void treeViewUnit_DoubleClick(object sender, EventArgs e)
        {
            tsbEdit.PerformClick();
        }
    }
}
